package br.com.autoLeal.cliente.bean;

import java.io.Serializable;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

import br.com.autoLeal.bean.GenericBean;
import br.com.autoLeal.util.WebResources;
import br.com.autoleal.cliente.entity.Cliente;
import br.com.autoleal.cliente.entity.ClienteServiceBean;
import br.com.autoleal.cliente.entity.PessoaFisica;
import br.com.autoleal.cliente.entity.PessoaJuridica;

@ManagedBean
@ViewScoped
public class ManterClientesBean extends GenericBean implements Serializable {

        private static final long serialVersionUID = -3467460247513445531L;

        private Integer tpPessoa;
        private PessoaFisica pessoaFisica = new PessoaFisica();
        private PessoaJuridica pessoaJuridica = new PessoaJuridica();
        
        private List<PessoaJuridica> pessoasJuridicas;
        private List<PessoaFisica> pessoasFisicas;

        @EJB
        private ClienteServiceBean clienteServiceBean;
        
        private Cliente clienteExcluir;
        private String consulta;
        
        @PostConstruct
        public void init() {
                carregarClientes();
        }
        
        public void carregarClientes() {
                
                pessoasFisicas = clienteServiceBean.buscarTodosPessoaFisica();
                pessoasJuridicas = clienteServiceBean.buscarTodosPessoaJuridica();
        }
        
        public void definirPfExcluir(PessoaFisica fisica) {
                clienteExcluir = fisica;
                tpPessoa = 1;
        }
        public void definirPjExcluir(PessoaJuridica juridica) {
                clienteExcluir = juridica;
                tpPessoa = 2;
        }
        
        public void excluirCliente() {
                clienteServiceBean.excluirCliente(clienteExcluir);
                carregarClientes();
                exibirMsgSucesso("Cliente excluído");
        }
        
        public String editarClientePF(PessoaFisica pf) {
                WebResources.getFlash().put(WebResources.CLIENTE, pf);
                WebResources.getFlash().put(WebResources.TIPO_CLIENTE, 1);
                return "alterarCliente";
        }
        
        public String editarClientePJ(PessoaJuridica pj) {
                WebResources.getFlash().put(WebResources.CLIENTE, pj);
                WebResources.getFlash().put(WebResources.TIPO_CLIENTE, 2);
                return "alterarCliente";
        }
        
        public void carregarListas() {
                pessoasFisicas = clienteServiceBean.buscarCodigoCpfNome(consulta);
                pessoasJuridicas = clienteServiceBean.buscarCodigoCnpjNome(consulta);
        }
        
        public Integer getTpPessoa() {
                return tpPessoa;
        }

        public void setTpPessoa(Integer tpPessoa) {
                this.tpPessoa = tpPessoa;
        }

        public PessoaFisica getPessoaFisica() {
                return pessoaFisica;
        }

        public void setPessoaFisica(PessoaFisica pessoaFisica) {
                this.pessoaFisica = pessoaFisica;
        }

        public PessoaJuridica getPessoaJuridica() {
                return pessoaJuridica;
        }

        public void setPessoaJuridica(PessoaJuridica pessoaJuridica) {
                this.pessoaJuridica = pessoaJuridica;
        }

        public List<PessoaJuridica> getPessoasJuridicas() {
                return pessoasJuridicas;
        }

        public void setPessoasJuridicas(List<PessoaJuridica> pessoasJuridicas) {
                this.pessoasJuridicas = pessoasJuridicas;
        }

        public List<PessoaFisica> getPessoasFisicas() {
                return pessoasFisicas;
        }

        public void setPessoasFisicas(List<PessoaFisica> pessoasFisicas) {
                this.pessoasFisicas = pessoasFisicas;
        }

        public Cliente getClienteExcluir() {
                return clienteExcluir;
        }

        public void setClienteExcluir(Cliente clienteExcluir) {
                this.clienteExcluir = clienteExcluir;
        }

        public String getConsulta() {
                return consulta;
        }

        public void setConsulta(String consulta) {
                this.consulta = consulta;
        }

}